++++++++++************************************++=-----===:. .*###*++*
+=+++++++++++++++++++++++++++++++++++++++++++++==--:-.:::.  :*****+**
===========================================+++===---+-:+-..=+-++++==+
--------------==========--===-----:::-------++=-:.+#*=+*::=#-:+=====*
+++*************##**#########*****************+++++****++***==*++==*#
##%%%%########%###########****+*********##**************************#
#################%%#####*********+*#****####*#**********************#
%#%%%%##%%%#########*************+*#****##**************************#
####*#####**####**************##*+##**####**************************#
%%##%##%######********************###*####****###*******************#
%##%%%##**##******************#*#####*****##**###*******************#
#*********##********************#**%#***##****#*##*####*************#
*******####************************#****###***#####****#*##*********#
*****####************************#**+*********#########*###*##****#*#
***####**********#***************#********##############***#######**#
#######*********##***************##**+*********##*####******#########
####*****************************##***+**************#####**********#
##********************************#****+****************************#
***********************************#***+*******************#********#
#**********###*********************#****+**###****##******###########
**********##***********************#****+*#####***#####***##########%
**************************#********##****+*##************############
###%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%